Skip to content

x-ffmpeg-s 音视频处理 ​

App 三端音视频处理:剪辑、拼接、压缩、转码、抽帧、抽音、静音、合并、缩放、旋转、水印、滤镜。输出请写到 getCacheDir() 等可写目录,路径不要带 file://。

Web / 微信不能跑处理任务。 getMediaInfo 可用,其它任务返回不支持。

兼容性 ​

HarmonyIOSAndroidWEB小程序
支持支持支持不支持不支持

调用 ​

ts
import { getCacheDir, getMediaInfo, cut, cancel } from "@/uni_modules/x-ffmpeg-s"

getMediaInfo({
  path: videoPath,
  success: (res) => {
    console.log(res.info)
  }
})

cut({
  input: videoPath,
  output: getCacheDir() + "/cut-" + Date.now() + ".mp4",
  startTime: 2,
  duration: 4,
  videoCodec: "copy",
  audioCodec: "copy",
  onProgress: (p) => {
    console.log(p)
  },
  success: (res) => {
    console.log(res.output, res.cancelled)
  }
})

cancel()

方法 ​

名称需要说明
getCacheDir无返回可写缓存目录,输出路径建议拼在这里
getRuntimeInfo无返回当前平台与编码器信息
getMediaInfopath读媒体信息,Web / 微信也可用
cutinput、output,可选 startTime、duration、编码器按时间裁剪
concatinputs(至少 2 个)、output拼接多个文件
extractFrameinput、output(.jpg/.png)、frameTime抽一帧封面
extractAudioinput、output抽出音轨
muteVideoinput、output去掉视频声音
mergeVideoAudioinput(视频)、audio、output把音频合进视频
mergeTimedinput、audio、output、audioStart,可选 audioDuration从指定秒开始贴一段音乐
scaleinput、output、width?、height?缩放
rotateVideoinput、output、rotate(0/90/180/270)旋转
compressinput、output,可选码率压缩
transcodeinput、output,可选编码器转码
watermarkinput、watermark、output,可选 position、margin、opacity加图片水印,文字水印不可用
filterVideoinput、output,可选 filter、audioFilter自定义滤镜链
cancel无取消当前任务,成功回调里 cancelled=true

多数任务共用字段:

字段说明默认
input / output绝对路径必填
startTime起始秒0
duration时长秒,不传则到结尾到结尾
width / height目标尺寸,0 为等比原尺寸
rotate0 / 90 / 180 / 2700
fliphorizontal / vertical-
fps帧率原帧率
videoCodec / audioCodec编码器,copy 为流拷贝按扩展名
videoBitrate / audioBitrate如 2M / 800k,不要小数-
onProgress / success / fail / complete回调-

concat:inputs(至少 2 个)、output。

extractFrame:input、output(.jpg / .png)、frameTime 必填。

mergeVideoAudio:input(视频)、audio、output。

mergeTimed:input、audio、output、audioStart 必填,audioDuration 默认整段音乐。

watermark:input、watermark(png/jpg)、output、position(默认 bottom-right)、margin(20)、scale(0 原尺寸)、opacity(1)、startTime / duration。

filterVideo:filter 视频滤镜链,audioFilter 音频滤镜链。

XFfmpegTaskResult:output、size、durationMs、cancelled。cancel() 后仍走 success,且 cancelled=true。

文字水印不可用,请用 png + watermark。

平台差异 ​

  1. 仅 Android / iOS / 鸿蒙可执行处理任务。
  2. 输出必须是可写绝对路径。

版本 ​

版权归https://xui.tmui.design你不得修改及二次开发,仅供TMUI4会员商用使用。不得转给非VIP会员使用,一经查实数倍赔偿,并追究法律责任。

更新日志 ​

1.0.0(2026-08-01) ​

  • 基于 FFmpeg 7.1 + x264 交叉编译三平台原生依赖包。
  • Android:NDK 30 编译 arm64-v8a,AAR 内置 8 个 .so(含 MediaCodec 硬解)。
  • HarmonyOS:OHOS NDK 编译 arm64-v8a,HAR 内置 8 个 .so,NAPI + Worker 架构。
  • iOS:Xcode 编译 arm64 静态框架 XFfmpegCore.framework,ObjC++ + Swift 边界。
  • 提供剪辑、拼接、压缩、转码、抽帧、抽音、静音、合并、缩放、旋转、翻转、媒体信息探测、取消等完整 API。
  • UTS 层统一 DCloud 三回调风格(success/fail/complete),耗时任务支持进度回调。
  • 编写交叉编译脚本与构建文档(native-src/*/BUILDING.md)。
最近更新